#pragma once

#include "GreatUInt.h"

class GreatInt
{
public:
	GreatInt();
	GreatInt(const char* i_string);
	GreatInt(const int i_num);
	explicit GreatInt(const GreatUInt& i_uint, const bool i_sign = true);

	const GreatInt& Assign(const char* i_string);
	const GreatInt& Assign(const int i_num);
	const GreatInt& operator+=(const GreatInt& i_that);
	const GreatInt& operator+=(const int i_num);
	const GreatInt& operator*=(const GreatInt& i_that);
	const GreatInt& operator*=(const int i_factor);
	const GreatInt& doexp(const UInt exp);
	const GreatUInt& Abs() const;

	bool IsPositive() const;

private:
	bool m_isPositive;
	GreatUInt m_magnitude;
};

#include "GreatInt.inl"